package cn.iocoder.yudao.module.crm.service.cluepool;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.crm.controller.admin.cluepool.vo.CluePoolPageReqVO;
import cn.iocoder.yudao.module.crm.controller.admin.cluepool.vo.CluePoolSaveReqVO;
import cn.iocoder.yudao.module.crm.dal.dataobject.cluepool.CluePoolDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 线索公海 Service 接口
 *
 * @author 数创万维
 */
public interface CluePoolService {

    /**
     * 创建线索公海
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createCluePool(@Valid CluePoolSaveReqVO createReqVO);

    /**
     * 更新线索公海
     *
     * @param updateReqVO 更新信息
     */
    void updateCluePool(@Valid CluePoolSaveReqVO updateReqVO);

    /**
     * 删除线索公海
     *
     * @param id 编号
     */
    void deleteCluePool(Long id);

    /**
     * 获得线索公海
     *
     * @param id 编号
     * @return 线索公海
     */
    CluePoolDO getCluePool(Long id);

    /**
     * 获得线索公海分页
     *
     * @param pageReqVO 分页查询
     * @return 线索公海分页
     */
    PageResult<CluePoolDO> getCluePoolPage(CluePoolPageReqVO pageReqVO);


    /**
     * 获取当前登录用户可用的线索公海
     * @param userId
     * @since 2024-05-30
     * @author PetePower
     * @return
     */
    List<CluePoolDO> getEnableClueList(Long userId);

    // 获取企业下的所有公海列表，不分类型
    List<CluePoolDO> getEnableClueListByTenant(Long tenantId);

}